package com.ruoyi.note.mapper;

import java.util.List;
import com.ruoyi.note.domain.NoteAttachment;
import org.apache.ibatis.annotations.Param;

/**
 * 笔记附件Mapper接口
 *
 * @author ruoyi
 * @date 2025-01-22
 */
public interface NoteAttachmentMapper
{
    /**
     * 查询笔记附件
     *
     * @param attachmentId 笔记附件主键
     * @return 笔记附件
     */
    public NoteAttachment selectNoteAttachmentByAttachmentId(Long attachmentId);

    /**
     * 查询笔记附件列表
     *
     * @param noteAttachment 笔记附件
     * @return 笔记附件集合
     */
    public List<NoteAttachment> selectNoteAttachmentList(NoteAttachment noteAttachment);

    /**
     * 根据关联ID和类型查询附件列表
     *
     * @param relationType 关联类型
     * @param relationId 关联ID
     * @return 附件列表
     */
    public List<NoteAttachment> selectAttachmentsByRelation(@Param("relationType") String relationType,@Param("relationId") Long relationId);

    /**
     * 新增笔记附件
     *
     * @param noteAttachment 笔记附件
     * @return 结果
     */
    public int insertNoteAttachment(NoteAttachment noteAttachment);

    /**
     * 修改笔记附件
     *
     * @param noteAttachment 笔记附件
     * @return 结果
     */
    public int updateNoteAttachment(NoteAttachment noteAttachment);

    /**
     * 删除笔记附件
     *
     * @param attachmentId 笔记附件主键
     * @return 结果
     */
    public int deleteNoteAttachmentByAttachmentId(Long attachmentId);

    /**
     * 批量删除笔记附件
     *
     * @param attachmentIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteNoteAttachmentByAttachmentIds(Long[] attachmentIds);

    /**
     * 根据关联ID和类型删除附件
     *
     * @param relationType 关联类型
     * @param relationId 关联ID
     * @return 结果
     */
    public int deleteAttachmentsByRelation(@Param("relationType") String relationType,@Param("relationId") Long relationId);

    /**
     * 增加下载次数
     *
     * @param attachmentId 附件ID
     * @return 结果
     */
    public int increaseDownloadCount(Long attachmentId);
}
